﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Windows.Forms;
using transportsystem.DTO;
using transportsystem.BUS;

namespace transportsystem
{
    public partial class frmKhachHang : Form
    {
        DataTable dt;
        bool hideControls = true;
        int iIndex;
        bool addNew = false;
        public frmKhachHang()
        {
            InitializeComponent();
        }
        void HideAddNew(bool value)
        {
            if (value == true)
                cbbDaiLy.Visible = false;
            else
                cbbDaiLy.Visible = true;
        }
        private void chkHideControls_CheckedChanged(object sender, EventArgs e)
        {
            hideControls = !hideControls;
            HideAddNew(hideControls);
        }
        public void SetDataGridTitle()
        {
            string[] a = new string[11] { "Mã khách hàng", "Họ tên", "Tên đăng nhập", "Mật khẩu", "Số điện thoại", "Địa chỉ", "Ngày sinh", "Email", "Loại khách hàng", "Số lần mua vé", "Số lần hủy vé" };

            for (int i = 0; i < a.Count(); i++)
            {
                dgvKhachHang1.Columns[i].HeaderText = a[i];

            }

        }
        public void SetDataGridTitle2()
        {
            string[] a = new string[11] { "Mã khách hàng", "Họ tên", "Tên đăng nhập", "Mật khẩu", "Số điện thoại", "Địa chỉ", "Ngày sinh", "Email", "Loại khách hàng", "Số lần mua vé", "Số lần hủy vé" };

            for (int i = 0; i < a.Count(); i++)
            {
                dgvKhachHang2.Columns[i].HeaderText = a[i];

            }

        }
        public void SetValueToControls()
        {
            if (dt.Rows.Count > 0)
            {
                int id = int.Parse(dt.Rows[iIndex]["makh"].ToString());
                SqlParameter[] sp = new SqlParameter[1];
                sp[0] = new SqlParameter("@makh", id);
                DataTable kh = KhachHangBUS.getKhachHangID(sp);
                txtName.Text = kh.Rows[0]["hoten"].ToString();
                txtNgaySinh.Text = kh.Rows[0]["ngaysinh"].ToString();
                txtEmail.Text = kh.Rows[0]["email"].ToString();

                txtDiaChi.Text = kh.Rows[0]["diachi"].ToString();
                txtSodt.Text = kh.Rows[0]["sodt"].ToString();
                cmbLoaiKh.SelectedValue = int.Parse(kh.Rows[0]["maloaikh"].ToString());
                txtSoLanMuaVe.Text = kh.Rows[0]["solanmuave"].ToString();
                txtSoLanHuyVe.Text = kh.Rows[0]["solanhuyve"].ToString();

            }
        }

        

      

        bool CheckInfo()
        {
            if (txtName.Text == "" || txtEmail.Text == "" || txtSoLanHuyVe.Text == "" ||
                txtDiaChi.Text == "" || txtNgaySinh.Text == "" || txtSodt.Text == "" || txtSoLanMuaVe.Text == "" || cmbLoaiKh.Text == "")
            {
                MessageBox.Show("Chưa điền đủ thông tin cần thiết!");
                return false;
            }
            return true;
        }
       


        private void frmKhachHang_Load_1(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'okDataSet2.loaikh' table. You can move, or remove it, as needed.
            
            HideAddNew(hideControls);
            string a = "";
            DataTable loaikh = KhachHangBUS.getLoaiKhachHangList();
            cmbLoaiKh.DataSource = loaikh;
            cmbLoaiKh.ValueMember = loaikh.Columns[0].ToString();
            cmbLoaiKh.DisplayMember = loaikh.Columns[1].ToString();
            SqlParameter[] sp = new SqlParameter[1];
            sp[0] = new SqlParameter("@tenkh", a);
            dt = KhachHangBUS.getKhachHangList(sp);
            if (dt != null && dt.Rows.Count > 0)
            {
                dgvKhachHang1.DataSource = dt;
            }
            SetDataGridTitle();
        }

        private void chkHideControls_CheckedChanged_1(object sender, EventArgs e)
        {
            hideControls = !hideControls;
            HideAddNew(hideControls);
       
        }

        private void btnOK_Click_1(object sender, EventArgs e)
        {
            txtName.Text = "";
            txtNgaySinh.Text = "";
            txtEmail.Text = "";
            txtSoLanHuyVe.Text = "";
            txtDiaChi.Text = "";
            txtSoLanMuaVe.Text = "";
            cmbLoaiKh.Text = "";
            txtSodt.Text = "";
            addNew = true;
            txtName.Focus();
        }

        private void btnSave_Click_1(object sender, EventArgs e)
        {
            if (CheckInfo() == true)
            {
                string id;
                if (addNew == true)
                {
                    id = "0";
                }
                else
                {
                    id = dt.Rows[iIndex]["makh"].ToString();
                }
                string hoten = txtName.Text;
                string tendangnhap = "";
                string matkhau = "";
                DateTime ngaysinh = DateTime.Parse(txtNgaySinh.Text);
                string sodt = txtSodt.Text;
                string diachi = txtDiaChi.Text;
                string email = txtEmail.Text;
                int maloaikh = int.Parse(cmbLoaiKh.SelectedValue.ToString());
                int solanmuave = int.Parse(txtSoLanMuaVe.Text);
                int solanhuyve = int.Parse(txtSoLanHuyVe.Text);
                SqlParameter[] sp = new SqlParameter[11];
                sp[0] = new SqlParameter("makh", id);
                sp[1] = new SqlParameter("hoten", hoten);
                sp[2] = new SqlParameter("tendangnhap", tendangnhap);
                sp[3] = new SqlParameter("matkhau", matkhau);
                sp[4] = new SqlParameter("sodt", sodt);
                sp[5] = new SqlParameter("diachi", diachi);
                sp[6] = new SqlParameter("ngaysinh", ngaysinh);
                sp[7] = new SqlParameter("email", email);
                sp[8] = new SqlParameter("maloaikh", maloaikh);
                sp[9] = new SqlParameter("solanmuave", solanmuave);
                sp[10] = new SqlParameter("solanhuyve", solanhuyve);

                int i = KhachHangBUS.getThaoTacKhachHang(sp);
                if (i == 1)
                {
                    MessageBox.Show("Cập nhật thành công");
                    frmKhachHang_Load_1(sender, e);
                }
                else
                    MessageBox.Show("Thất bại");
            }
        }

        private void btnRemove_Click_1(object sender, EventArgs e)
        {
            if (MessageBox.Show("Xóa dòng dữ liệu này ?", "Message", MessageBoxButtons.YesNo, MessageBoxIcon.Error) == DialogResult.Yes)
            {
                KhachHang kh = new KhachHang();
                kh.Makh = int.Parse(dt.Rows[iIndex]["makh"].ToString());
                bool i = KhachHangBUS.deleteKhachHang(kh);
                string msg = "";
                if (i == true)
                    msg = "Xóa thành công";
                else
                    msg = "Xóa thất bại";
                MessageBox.Show(msg);
                frmKhachHang_Load_1(sender, e);
            }
        }

        private void btnSearch_Click_1(object sender, EventArgs e)
        {
            if (rdbUnrepeatable_Read.Checked == true || rdbPhanTom.Checked == true)
            {
                string hoten = txtTimKiem.Text;
                SqlParameter[] sp = new SqlParameter[1];
                sp[0] = new SqlParameter("@tenkh", hoten);
                DataSet ds = KhachHangBUS.getKhachHangList2(sp);
                DataTable dt1 = ds.Tables[0];
                DataTable dt2 = ds.Tables[1];
                if (dt1 != null && dt1.Rows.Count > 0)
                {
                    dgvKhachHang1.DataSource = dt1;
                }
                if (dt2 != null && dt2.Rows.Count > 0)
                {
                    dgvKhachHang2.DataSource = dt2;
                }

                SetDataGridTitle();
                SetDataGridTitle2();
            }
            if (rdbDrityRead.Checked == true)
            {
                string hoten = txtTimKiem.Text;
                SqlParameter[] sp = new SqlParameter[1];
                sp[0] = new SqlParameter("@tenkh", hoten);
                dt = KhachHangBUS.getKhachHangList(sp);
                if (dt != null && dt.Rows.Count > 0)
                {
                    dgvKhachHang1.DataSource = dt;
                }
                SetDataGridTitle();
            }
        }

        private void dgvKhachHang1_CellDoubleClick(object sender, System.Windows.Forms.DataGridViewCellEventArgs e)
        {
            iIndex = e.RowIndex;
            addNew = false;
            SetValueToControls();
        }

        private void btn_CapNhatHeSo_Click(object sender, EventArgs e)
        {
            int solanmuavecapnhat = int.Parse(txtSoLanMuaVe.Text);
            int solanmuave = int.Parse(dt.Rows[iIndex]["solanmuave"].ToString());
            int giatri = solanmuavecapnhat - solanmuave;
            int id = int.Parse(dt.Rows[iIndex]["makh"].ToString());
            SqlParameter[] sp = new SqlParameter[2];
            sp[0] = new SqlParameter("@makh", id);
            sp[1] = new SqlParameter("@giatri", giatri);
            bool i = KhachHangBUS.updateSoLanMuaVe(sp);
            string msg = "";
            if (i == true)
            {
                msg = "Cập nhật thành công";
            }
            else
                msg = "Cập nhật thất bại";
            MessageBox.Show(msg);
            frmKhachHang_Load_1(sender, e);
        }

        private void bnt_capnhathuyve_Click(object sender, EventArgs e)
        {
            int solanhuyvecapnhat = int.Parse(txtSoLanHuyVe.Text);
            int solanhuyve = int.Parse(dt.Rows[iIndex]["solanhuyve"].ToString());
            int giatri = solanhuyvecapnhat - solanhuyve;
            int id = int.Parse(dt.Rows[iIndex]["makh"].ToString());
            SqlParameter[] sp = new SqlParameter[2];
            sp[0] = new SqlParameter("@makh", id);
            sp[1] = new SqlParameter("@giatri", giatri);
            bool i = KhachHangBUS.updateSoLanHuyVe(sp);
            string msg = "";
            if (i == true)
            {
                msg = "Cập nhật thành công";
            }
            else
                msg = "Xuất hiện lỗi";
            MessageBox.Show(msg);
            frmKhachHang_Load_1(sender, e);
        }




    }
}
